// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.ast.statement.SQLAlterStatement;
// import com.alibaba.druid.sql.dialect.mysql.ast.MySqlObjectImpl;
// import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;

// import java.util.ArrayList;
// import java.util.std::list;
#pragma once
#include <list>
#include "../MySqlObjectImpl.h"
#include "MySqlStatementImpl.h"
#include "../../../../ast/statement/SQLAlterStatement.h"

class SQLName;
class MySqlASTVisitor;

class MySqlRenameTableStatement_Item : public MySqlObjectImpl
{
public:
  SQLName_ptr name;
  SQLName_ptr to;

  SHAREDOBJECT(MySqlRenameTableStatement_Item);
  SQLName_ptr getName();

  void setName(SQLName_ptr name);

  SQLName_ptr getTo();

  void setTo(SQLName_ptr to);

  void accept0(MySqlASTVisitor_ptr visitor) override;
};

class MySqlRenameTableStatement : public MySqlStatementImpl, virtual public SQLAlterStatement
{
public:
  std::shared_ptr<std::list<MySqlRenameTableStatement_Item_ptr>> items;

  std::shared_ptr<std::list<MySqlRenameTableStatement_Item_ptr> >getItems();

  MySqlRenameTableStatement();
  SHAREDOBJECT(MySqlRenameTableStatement);
  void addItem(MySqlRenameTableStatement_Item_ptr item);

  void accept0(MySqlASTVisitor_ptr visitor) override;
};
